rlm و lrm دو کد جالب html برای دایرکشن
یکی از مشکلات برنامه نویسی وب در زبان فارسی دایرکشن یا نمایش درست حروف است
مشخصه های dir که در CSS آن را بصورت direction باید نوشت دو مقدار ltr و rtl دارند به معنی left to right و right to left
اگر کلیت پاراگراف ما فارسی باشد از rtl و یا کلیت آن لاتین باشد از ltr استفاده می کنیم
اما مشکل ما وقتی است که متن زبان دوم دارای یک حرف یا کارکتر ویژه مثل ! یا ? و یا پرانتز و... باشد
در این مواقع کارکترهای ویژه در هر صورت از پدر(parent) تبعیت می کند
و چون dir یا direction فقط برای حالت بلوک تعریف شده است نمی توان برای یک خط از آن استفاده کرد چرا که موجب شکستگی یا همان نمایش ادامه متن در خط بعد خواهد شد
قصد دارم برای شب یلدای امسال یک هدیه برای برنامه نویسان وب داشته باشیم
یعنی رفع کامل این مشکل
سعی کنید عبارت مقابل که یک پاراگراف انگلیسی همراه با کلمه فارسی است (خط پایین) یایک پاراگراف فارسی که دارای عبارت انگلیسی است (خط پایین تر) را بنویسید
حتما پیش خودتون می گویید اینکه کاری نداره و شروع به نوشتن می کنید
یک متن آنگلیسی(text only!) برای تست
اگر دقت کنید کارکاکتر ! در جای خودش نمایش داده نشده است
همچنین است برای مثال دومی یعنی
می بینید که در هر دو مورد کارکتر ویژه ! در جای خودش نیست
راهکار آن را بزودی بر روی همین وبلاگ خواهید یافت یعنی
سطر اول در کادر زیر را با سطر دو مقایسه کنید
مشخصه های dir که در CSS آن را بصورت direction باید نوشت دو مقدار ltr و rtl دارند به معنی left to right و right to left
اگر کلیت پاراگراف ما فارسی باشد از rtl و یا کلیت آن لاتین باشد از ltr استفاده می کنیم
اما مشکل ما وقتی است که متن زبان دوم دارای یک حرف یا کارکتر ویژه مثل ! یا ? و یا پرانتز و... باشد
در این مواقع کارکترهای ویژه در هر صورت از پدر(parent) تبعیت می کند
و چون dir یا direction فقط برای حالت بلوک تعریف شده است نمی توان برای یک خط از آن استفاده کرد چرا که موجب شکستگی یا همان نمایش ادامه متن در خط بعد خواهد شد
قصد دارم برای شب یلدای امسال یک هدیه برای برنامه نویسان وب داشته باشیم
یعنی رفع کامل این مشکل
سعی کنید عبارت مقابل که یک پاراگراف انگلیسی همراه با کلمه فارسی است (خط پایین) یایک پاراگراف فارسی که دارای عبارت انگلیسی است (خط پایین تر) را بنویسید
a persian text same as (برای تست! ) beetwen english words
یک متن انگلیسی در داخل پاراگراف فارسی مثل (test only!) نوشته شد
حتما پیش خودتون می گویید اینکه کاری نداره و شروع به نوشتن می کنید
یک متن آنگلیسی(text only!) برای تست
اگر دقت کنید کارکاکتر ! در جای خودش نمایش داده نشده است
همچنین است برای مثال دومی یعنی
a persian text same as (برای تست! ) beetwen english words) beetwen english words
می بینید که در هر دو مورد کارکتر ویژه ! در جای خودش نیست
راهکار آن را بزودی بر روی همین وبلاگ خواهید یافت یعنی
سطر اول در کادر زیر را با سطر دو مقایسه کنید
a persian text same as (برای تست! ) beetwen english words
a persian text same as (برای تست! ) beetwen english words
a persian text same as (برای تست! ) beetwen english words
البته لازم به گفتن نیست که این کار با استفاده از کارکتر ویژه این کار انجام خواهد شد و نه تغییر مکان حروف
باور ندارید view source بگیرید یا در فایرفاکس کادر بالا را انتخاب و با کلیک راست view selection source را ببینید
برای اینکار من از کارکترهای ویژه rlm و lrm استفاه کرده ام
توضیحات بیشتر را می توانید در اینجا بخوانید
http://en.wikipedia.org/wiki/Left-to-right_mark
http://dotancohen.com/howto/rtl_right_to_left.html
http://en.wikipedia.org/wiki/Left-to-right_mark
http://en.wikipedia.org/wiki/Bi-directional_text